package com.mdd.admin.service.subject;

import com.mdd.admin.validate.common.PageParam;
import com.mdd.admin.validate.subject.SubjectParam;
import com.mdd.admin.vo.course.CourseListVo;
import com.mdd.admin.vo.subject.SubjectListVo;
import com.mdd.admin.vo.subject.SubjectDetailVo;
import com.mdd.common.core.PageResult;
import com.mdd.common.entity.course.Course;
import com.mdd.common.entity.subject.Subject;

import java.util.List;
import java.util.Map;

/**
 * 专题专区服务接口类
 * @author panweiliang
 */
public interface ISubjectService {

    /**
     * 专题专区列表
     *
     * @author panweiliang
     * @param pageParam 分页参数
     * @param params 搜索参数
     * @return PageResult<SubjectVo>
     */
    PageResult<SubjectListVo> list(PageParam pageParam, Map<String, String> params);

    /**
     * 专题/专区-课程列表
     *
     * @author panweiliang
     * @param subjectId 专题/专区id
     * @return List<SubjectVo>
     */
    List<CourseListVo> listCourse(Integer subjectId);

    /**
     * 专题专区详情
     *
     * @author panweiliang
     * @param id 主键ID
     * @return Subject
     */
    SubjectDetailVo detail(Integer id);

    /**
     * 专题专区新增
     *
     * @author panweiliang
     * @param subjectParam 参数
     */
    void add(SubjectParam subjectParam);

    /**
     * 专题专区编辑
     *
     * @author panweiliang
     * @param subjectParam 参数
     */
    void edit(SubjectParam subjectParam);

    /**
     * 专题专区删除
     *
     * @author panweiliang
     * @param id 主键ID
     */
    void del(Integer id);

    /**
     * 专题专区状态
     *
     * @param id 专题专区主键
     */
    Subject changeStatus(Integer id);

}
